package collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * List子接口的使用
 * 特点： 1.有序有下标 2.可以重复
 * @author  zff
 */
public class Demo03 {
    public static void main(String[] args) {
        //创建集合对象
        List list = new ArrayList<>();
        //1添加元素
        list.add("苹果");
        list.add("小米");
        list.add("华为");
        list.add("OPPO");
        list.add("Vivo");
        System.out.println("元素个数：" +list.size());
        System.out.println(list.toString());
        //2.删除元素
        System.out.println("-----使用remove(o)方法删除苹果");
        System.out.println("-----使用remove(index)方法删除下标为0的元素------");
        list.remove("苹果");//删除方式1
        list.remove(0);//删除方式2
        System.out.println(list.toString());
        //3.遍历
        //3.1 for
        System.out.println("-----使用for循环迭代-----");
        for (int i = 0; i < list.size() ; i++) {
            System.out.println(list.get(i));
        }
        //3.2增强for
        System.out.println("-----使用增强for循环迭代-----");
        for (Object o : list) {
            System.out.println(o);
        }
        //3.3迭代器
        System.out.println("-----使用迭代器迭代------");
        Iterator it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        //3,4使用列表迭代器和iterator的区别
        ListIterator lit = list.listIterator();
        System.out.println("------使用列表迭代器从前往后遍历-------");
        while (lit.hasNext()){
            System.out.println(lit.nextIndex() + ":" +lit.next());
        }
        System.out.println("------使用列表迭代器从后往前遍历-------");
        while (lit.hasPrevious()){
            System.out.println(lit.previousIndex() + ":" + lit.previous());
        }
        //4.判断
        System.out.println(list.contains("苹果"));
        System.out.println(list.isEmpty());
        System.out.println(list.indexOf("OPPO"));
    }
}
